freeslot("SPR_MISS","MT_MISS","S_MISS_SANS","S_MISS_PARTICLE")
mobjinfo[MT_MISS] = {
	spawnstate = S_MISS_PARTICLE,
	flags = MF_NOCLIPHEIGHT
}
states[S_MISS_SANS] = {SPR_MISS, A, 2, nil, 0, 0, S_PLAY_WALK}
states[S_MISS_PARTICLE] = {SPR_MISS, B, 90, nil, 0, 0, S_NULL}

addHook("ShouldDamage", function(mo, inflictor, source, damage, damagetype)
	if mo.valid and mo.skin == "sans"
	and mo.player.sansmiss > 0
		if not(source) or damagetype
			return
		end
		if inflictor.valid and not inflictor.miss
			inflictor.miss = 1
			inflictor.misst = mo
			local miss =  P_SpawnMobj(inflictor.x, inflictor.y, inflictor.z, MT_MISS)
			miss.momz = 5*FRACUNIT
			miss.scale = FRACUNIT/4
		end
		return false
	end
end, MT_PLAYER)

addHook("PlayerThink", function(player)
	if (player.mo and player.mo.valid) and (player.mo.skin == "sans")
		player.sansbar = $ or 0
		player.sansmiss = $ or 0
		player.sansangle = $ or 0
		if (player.cmd.buttons & BT_USE) and (player.sansbar > 5) and (player.sansmiss == 0) and P_IsObjectOnGround(player.mo) and (player.powers[pw_carry] == CR_NONE)
			player.sansbar = $ - 5
			player.sansmiss = TICRATE/2
			player.sansangle = player.mo.angle
		end
		if (player.sansmiss > 0)
			player.mo.state = S_MISS_SANS
			player.sansmiss = $ - 1
			player.mo.angle = player.sansangle
			P_InstaThrust(player.mo, player.sansangle, player.sansbar / 4 * FRACUNIT)
		end
		if (leveltime == 0) or (player.playerstate == PST_REBORN)
			player.sansbar = 100
		end
		if (player.sansbar < 100) and (player.speed == 0)
			if (player.sansbar >= 80)
				player.sansbar = $ + 1
			elseif (player.sansbar >= 50 and player.sansbar < 80)
				if (leveltime % 2 == 0)
					player.sansbar = $ + 1
				end
			elseif (player.sansbar < 50)
				if (player.sansbar <= 20)
					if (leveltime % 10 == 0)
						player.sansbar = $ + 1
					end
				else
					if (leveltime % 5 == 0)
						player.sansbar = $ + 1
					end
				end
			end
		end
		if (player.sansbar <= 20)
			player.normalspeed = 2*FRACUNIT
		else
			player.normalspeed = 6*FRACUNIT
		end
	end
end)

local function sansbar(v, player)
	if player.mo and player.mo.skin == "sans"
		local img = "SANSST1"
		if (player.sansbar >= 75)
			img = "SANSST1"
		elseif (player.sansbar < 75) and (player.sansbar >= 50)
			img = "SANSST2" 
		elseif (player.sansbar < 50) and (player.sansbar >= 20)
			img = "SANSST3"
		else
			img = "SANSST4"
		end
		v.drawScaled(320*FRACUNIT,200*FRACUNIT,FRACUNIT/4,v.cachePatch(img),V_SNAPTORIGHT|V_SNAPTOBOTTOM)
		for i = 0,player.sansbar+player.sansbar/3
			v.drawStretched((320+i)*FRACUNIT,200*FRACUNIT,FRACUNIT/4,FRACUNIT/4,v.cachePatch("SANSSTB"),V_SNAPTORIGHT|V_SNAPTOBOTTOM)
		end
	end
end
hud.add(sansbar)